//
// Created by Key-Box-Min on 30/06/2020.
//

#ifndef LIB_TOOLS_H
#define LIB_TOOLS_H

#include <iostream>
#include <functional>
#include <chrono>

namespace Lib {

    uint64_t getNow();

    template <typename Fun>
    void parseParams(Fun fun){}

    template <typename Fun,typename T,typename ...Args>
    void parseParams(Fun fun,T arg,Args ...args){
        fun(arg);
        parseParams(fun,args...);
    }

//    template <typename K,typename T>
//    class Distributor : public Object{
//    public:
//        LIB_OBJECT
//        struct TimeoutEvent : public ObjectEvent{
//            LIB_EVENT
//
//        };
//        struct User{
//
//        };
//    public:
//        T get(const K& id){
//
//        }
//
//        void put(const K& id,const T& data){
//
//        }
//
//        void add(const T& data){
//            __data.add(data);
//        }
//
//    protected:
//        void event(Event* event){
//
//        }
//
//    private:
//        TSet<T>     __data;
//        TMap<K,User>   __users;
//        uint64_t    __timeout;
//    };
};

#endif //COMPILERDOMEA1_TOOLS_H
